<template>
  <!-- 轻量级赞助播报 -->
  <LightBanner />
  <!-- 炫酷赞助横幅 -->
  <SponsorBanner />
  <!-- 原生通知组件 -->
  <NativeNotification />
</template>

<script setup>
// setImmediate polyfill for vendor.js
if (typeof setImmediate === 'undefined') {
  const globalObj = typeof window !== 'undefined' ? window :
                    typeof globalThis !== 'undefined' ? globalThis :
                    typeof global !== 'undefined' ? global :
                    Function('return this')();
  globalObj.setImmediate = function(fn, ...args) {
    return setTimeout(fn, 0, ...args);
  };
  globalObj.clearImmediate = function(id) {
    clearTimeout(id);
  };
}
import { onLaunch, onShow, onHide, onError } from '@dcloudio/uni-app'
import { useUserStore } from '@/store/user'
import LightBanner from '@/components/LightBanner.vue'
import SponsorBanner from '@/components/SponsorBanner.vue'
import NativeNotification from '@/components/NativeNotification.vue'

onLaunch(async () => {
	console.log('App Launch')
	console.log('🎉 App.vue 开始加载，LightBanner组件应该会挂载')
	
	// 初始化全局数据
	if (typeof getApp === 'function') {
		try {
			const app = getApp()
			if (app) {
				app.globalData = app.globalData || {}
				console.log('🎉 已初始化全局数据')
			}
		} catch (error) {
			console.log('🎉 初始化全局数据失败:', error)
		}
	}
	
	const userStore = useUserStore()
	
	try {
		// 初始化用户状态
		await userStore.initialize()
		console.log('用户状态初始化完成')
		
		// 添加用户状态检查，防止后续访问时出现 undefined 错误
		if (!userStore.profile) {
			console.warn('⚠️ 用户状态初始化后 profile 仍为空，可能需要重新登录')
		}
	} catch (error) {
		console.error('初始化用户状态失败:', error)
		// 如果初始化失败，确保 userStore 有默认值
		if (!userStore.profile) {
			console.log('设置默认用户状态以防止后续错误')
			userStore.profile = null
		}
	}
})

onShow(() => {
	console.log('App Show')
})

onHide(() => {
	console.log('App Hide')
})

onError((err) => {
	console.error('应用错误:', err)
	
	// 如果是 userId 相关的错误，提供更详细的错误信息
	if (err.message && err.message.includes('userId')) {
		console.error('检测到 userId 相关错误，可能是用户状态未正确初始化')
		
		// 安全地获取用户状态信息
		try {
			const userStore = useUserStore()
			console.error('当前用户状态:', {
				hasUserStore: !!userStore,
				hasProfile: !!(userStore && userStore.profile),
				profileUid: userStore?.profile?.uid
			})
			
			// 尝试重新初始化用户状态
			if (userStore) {
				console.log('尝试重新初始化用户状态...')
				userStore.initialize()
			}
		} catch (initError) {
			console.error('获取用户状态信息失败:', initError)
		}
	}
	
	// 如果是 options 相关错误，提供页面参数信息
	if (err.message && err.message.includes('options')) {
		console.error('检测到 options 相关错误，可能是页面参数传递问题')
		try {
			const pages = getCurrentPages()
			const currentPage = pages[pages.length - 1]
			console.error('当前页面信息:', {
				pagesLength: pages.length,
				currentPage: currentPage,
				options: currentPage?.options
			})
		} catch (pageError) {
			console.error('获取页面信息失败:', pageError)
		}
	}
})
</script>


<style>
html, body, #app {
  padding: 0 !important;
  margin: 0 !important;
  width: 100vw !important;
  min-width: 100vw !important;
  box-sizing: border-box;
  background: transparent !important;
  overflow-x: hidden !important;
}
	/*每个页面公共css */
</style>